<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>数组的扩展</title>
  <style>
     div, li, p {
      line-height: 40px;
    }
    span {
      color: red;
    }
  </style>
</head>
<body>
  <h2>扩展运算符</h2>
  <ul>
    <li>扩展运算符是三个点，它如同rest参数的逆运算，将一个数组转化为用逗号分隔的参数序列</li>
    <li>可以取代apply方法简化代码写法</li>
    <li>有了扩展运算符，可以直接将数组传入push方法</li>
    <li>
      <h3>扩展运算符的应用</h3>
      <ul>
        <li>1.扩展运算符提供了数组合并的新写法</li>
        <li>2.如果将扩展运算符用于数组赋值，则只能将其放在参数的最后一位</li>
        <li>3.扩展运算符也可以用于函数的返回值</li>
        <li>扩展运算符还可以将字符串转为真正的数组</li>
      </ul>
    </li>
  </ul>
  <h2>Array.from</h2>
  <ul>
    <li>
      Array.from方法用于将两类对象转为真正的数组：类似数组的对象（对象中有length属性）和可遍历对象（包括ES6新增的数据结构Set和Map）
    </li>
    <li>
      只要部署了Iterator接口的数据结构，Array.from都能将其转化为数组,如果参数是一个真正的数组，Array.from会返回一个一模一样的新数组
    </li>
    <li>
      所谓类数组对象，本质特征只有一点：必须有length属性。因此有length属性的对象，都可以通过Array.from方法转为数组。而这种清凉扩展运算符则无法转换
    </li>
    <li>
      Array.from还可以接收第二个参数，作用类似于数组的map方法，用来对每个元素进行处理，将处理后的值放入返回的数组
    </li>
  </ul>
  <h2>Array.of()</h2>
  <p>Array.of()总是返回参数组成的数组。</p>
  
  
  <h2>数组实例的find()和findIndex()</h2>
  <h3>find方法</h3>
  <ul>
    <li>数组实例的find方法用于找出第一个符合条件的数组成员。</li>
    <li>
      find方法的参数是一个回调函数，所有数组成员依次执行回调函数，一直到找出<span>第一个</span>返回值为true的成员，并返回该成员
    </li>
    <li>
      如果没有符合条件的成员，则返回undefined
    </li>
  </ul>
  <h3>findIndex方法</h3>
  <ul>
    <li>
      findIndex方法的用法与find方法非常类似，返回<span>第一个</span>符合条件的数组的<span>成员位置</span>
    </li>
    <li>都不符合条件则返回-1</li>
    <li>find,findIndex方法，这两个方法都可以接受第二个参数，用来绑定回调函数的this对象</li>
  </ul>

  <h2>新增数组的遍历方法</h2>
 <p>
   ES6提供了3个新方法-entries(),keys(),values()。这三个方法用于遍历数组。他们都返回一个遍历器对象，可用for...of循环遍历。唯一的区别在于，keys()是对键名的遍历，values()是对键值的遍历，entries()是对键值对的遍历
 </p>
 
 
 <h2>数组实例的includes方法</h2>
 <p>
   Array.prototype.includes方法返回一个布尔值，表示某个数组是否包含给定的值，该方法的第二个参数表示搜索的起始位置，默认为0
</p>
<p>
  indexOf方法有两个缺点，一是不够语义化，其含义是找到参数值的第一个出现的位置。所以要比较是否不等于-1，表达起来不够直观；二是，其内部使用严格相等运算符（===）进行判断。会导致误判
</p>
</body>
</html>